import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user.js'
import setting from './modules/setting.js'

// 注册插件
Vue.use(Vuex)

// 创建仓库实例
const store = new Vuex.Store({
  // 开启严格模式，帮我们在开发阶段检查语法规范
  // 这个严格模式，会消耗一点性能，因为，他在帮我们检查，所以建议仅仅在开发阶段打开，上线后，关闭
  strict: true,
  state: {
    count: 101
  },
  getters: {
    // doubleCount (state) {
    //   return state.count * 2
    // }
    // doubleCount: state => state.count * 2
  },
  mutations: {
    setAge () {
      console.log('根模块下的 setAge')
    },
    addCountN (state, n) {
      // state.count = state.count + n
      state.count += n
    },
    addCount (state) {
      // setTimeout(() => {
      state.count++
      // }, 3000)
    }
  },
  actions: {
    asyncAddCountN (context, n) {
      setTimeout(() => {
        // 只有 mutation 能改 state
        context.commit('addCountN', n)
      }, 1000)
    }
  },
  modules: {
    // 模块名: 模块配置对象
    setting,
    user
  }
})

export default store
